#include<bits/stdc++.h>
#define int long long
using namespace std;
main(){
  freopen("clean.in","r",stdin);
  freopen("clean.out","w",stdout);
  ios::sync_with_stdio(false);
  cin.tie(0); cout.tie(0);
  int t; cin>>t;
  while(t--){
    int n; cin>>n;
    vector<int> a(n);
    for(auto &i:a)cin>>i;
    vector<vector<int> > g(n);
    for(int i=1;i<n;i++){
      int u,v; cin>>u>>v;
      g[--u].emplace_back(--v);
      g[v].emplace_back(u);
    }
    if(n==2){cout<<(a[0]==a[1]?"YES\n":"NO\n"); continue;}
    function<int(int,int)> dfs=[&](int u,int f)->int{
      if(g[u].size()==1)return a[u];
      int m=0,s=0;
      for(int i:g[u])
        if(i!=f){
          int x=dfs(i,u);
          if(x==-1)return -1;
          m=max(m,x),s+=x;
        }
      int w=s-a[u],x=s-(w<<1);
      return w<0||x<0||w>s-m?-1:x;
    };
    for(int i=0;i<n;i++)
      if(g[i].size()>1){cout<<(dfs(i,i)?"NO\n":"YES\n"); break;}
  }
  return 0;
}